// class Solution {
// public:
//     void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//         vector<int> nums(m + n);
//         int cur1 = 0,cur2 = 0,cur = 0;
//         while(cur1 < m && cur2 < n)
//         {
//             if(nums1[cur1] <= nums2[cur2])  nums[cur++] = nums1[cur1++];
//             else nums[cur++]  = nums2[cur2++];
//         }

//         while(cur1 < m) nums[cur++] = nums1[cur1++];
//         while(cur2 < n) nums[cur++] = nums2[cur2++];

//         for(int i = 0; i < n + m; i++) nums1[i] = nums[i];

//     }
// };

#include <vector>
using namespace std;

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        vector<int> nums(m + n);
        int cur1 = m - 1,cur2 = n - 1,cur = n+m - 1;
        while(cur1 >= 0 && cur2 >= 0){
            if(nums1[cur1] > nums2[cur2])   nums1[cur--] = nums1[cur1--];
            else nums1[cur--] = nums2[cur2--];
        }

        while(cur2 >= 0)     nums1[cur--] = nums2[cur2--];
    }
};